const Shell = imports.gi.Shell;
const St = imports.gi.St;
const Signals = imports.signals;
+const Gettext = imports.gettext.domain('gnome-shell');
+const _ = Gettext.gettext;
const DND = imports.ui.dnd;
const Lightbox = imports.ui.lightbox;
},
addWorkspace: function() {
+ if (!this.canAddWorkspace()) {
+ Main.overview.infoBar.setMessage(_("Can't add a new workspace because maximum workspaces limit has been reached."));
+ return null;
+ }
+
+ return global.screen.append_new_workspace(false, global.get_current_time());
+ },
+
+ _getWorkspaceIndexToRemove: function() {
throw new Error("Not implemented");
},
canRemoveWorkspace: function() {
- throw new Error("Not implemented");
+ return this._getWorkspaceIndexToRemove() > 0;
},
removeWorkspace: function() {
- throw new Error("Not implemented");
+ if (!this.canRemoveWorkspace()) {
+ Main.overview.infoBar.setMessage(_("Can't remove the first workspace."));
+ return;
+ }
+ let index = this._getWorkspaceIndexToRemove();
+ let metaWorkspace = this._workspaces[index].metaWorkspace;
+ global.screen.remove_workspace(metaWorkspace,
+ global.get_current_time());
},
updateWorkspaces: function() {
},
_acceptNewWorkspaceDrop: function(source, dropActor, x, y, time) {
- this.addWorkspace();
+ let ws = this.addWorkspace();
+ if (ws == null)
+ return false;
return this.acceptNewWorkspaceDrop(source, dropActor, x, y, time);
}
};
return null;
},
- addWorkspace: function() {
- return global.screen.append_new_workspace(false, global.get_current_time());
- },
-
- canRemoveWorkspace: function() {
- return global.screen.n_workspaces > 1;
- },
-
- removeWorkspace: function() {
- let removedIndex = this._workspaces.length - 1;
- let metaWorkspace = this._workspaces[removedIndex].metaWorkspace;
- global.screen.remove_workspace(metaWorkspace,
- global.get_current_time());
+ _getWorkspaceIndexToRemove: function() {
+ return this._workspaces.length - 1;
}
};
return actor;
},
- canRemoveWorkspace: function() {
- return global.screen.get_active_workspace_index() != 0;
- },
-
_updatePanelVisibility: function() {
let showSwitches = (global.screen.n_workspaces > 1);
if (this._scroll != null) {
},
addWorkspace: function() {
- let ws = global.screen.append_new_workspace(false,
- global.get_current_time());
- ws.activate(global.get_current_time());
+ let ws = GenericWorkspacesView.prototype.addWorkspace.call(this);
+ if (ws != null)
+ ws.activate(global.get_current_time());
+
return ws;
},
- removeWorkspace: function() {
- let removedIndex = global.screen.get_active_workspace_index();
- let metaWorkspace = this._workspaces[removedIndex].metaWorkspace;
- global.screen.remove_workspace(metaWorkspace,
- global.get_current_time());
+ _getWorkspaceIndexToRemove: function() {
+ return global.screen.get_active_workspace_index();
}
};
_setButtonSensitivity: function(button, sensitive) {
if (button == null)
return;
- button.reactive = sensitive;
button.opacity = sensitive ? 255 : 85;
},